#ifndef PLAYERPLANE_H
#define PLAYERPLANE_H

#include "BasePlane.h"
#include <QObject>

// 前向声明（避免头文件循环包含）
class MainScene;
class Bullet;

class PlayerPlane : public BasePlane
{
    Q_OBJECT
public:
    /**
     * @brief 移动方向枚举（位掩码组合）
     */
    enum Direction {
        Up = 1,     // 向上移动
        Down = 2,   //< 向下移动
        Left = 4,   //< 向左移动 0100
        Right = 8   //< 向右移动 1000
    };

    explicit PlayerPlane(MainScene* mainScene, QWidget *parent = nullptr);

    // 设置/清除移动方向（支持多方向组合）
    void setMoveDirection(int direction);
    void clearMoveDirection(int direction);

    // 发射子弹
    void fire();

    // 更新位置（每帧调用）
    void updatePosition();

    // 获取移动速度
    int getSpeed() const { return m_speed; }

private:
    MainScene* m_mainScene;    //< 主场景指针（用于访问子弹数组）
    int m_moveDirection;       //< 当前移动方向（位掩码）
    int m_speed;              //< 移动速度（像素/帧）
    int m_fireCoolDown;       //< 发射冷却时间（帧数）
    int m_fireCoolDownCounter;//< 当前冷却计数
};

#endif // PLAYERPLANE_H
